1. Field of the Invention
The present invention relates to computer systems and networks of computer systems, and, more particularly, to interprocess communication between otherwise autonomous computer processes executing on a distributed computer system and network thereof.
2. Description of the Related Art
Computer systems are information processing systems which can be designed to give independent computing power to one user or a plurality of users. Computer systems may be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, and embedded systems. A typical computer system includes at least one processing unit, associated memory and a number of input/output (I/O) devices. In addition to other purposes, computer systems are used to track and control manufacturing processes such as semiconductor manufacturing processes and systems.
A computer system processes information according to a program and produces resultant output information via the I/O devices. A program is a list of internally stored instructions such as a particular application program and/or an operating system. A computer process typically includes an executing (running) program or portion of a program, current program values and state information, and the resources used by the operating system to manage the execution of the process. A process may spawn other processes. A process which spawns other processes is a parent process, and the spawned processes are child processes of the parent process. A function described as being performed by a parent process is sometimes actually performed by a child process spawned by the parent process to perform the function. An application or work session includes an application/work process and any processes spawned by the application/work process.
A computer system typically includes multiple computer processes executing "concurrently." Often, a computer system includes a single processing unit which is capable of supporting many active processes alternately. Although multiple processes may appear to be executing concurrently, at any given point in time only one process is actually executed by the single processing unit. By rapidly changing the process executing, a computer system gives the appearance of concurrent process execution. The ability of a computer system to multiplex the computer system's resources among multiple processes in various stages of execution is called multitasking. Systems with multiple processing units, which by definition can support true concurrent processing, are called multiprocessing systems. Active processes are often referred to as executing concurrently when such processes are executed in a multitasking and/or a multiprocessing environment.
Computer systems are often coupled to other computer systems to form a network to facilitate the exchange and handling of information. A computer network typically includes a group of computer systems and associated hardware devices (e.g., physical connections) and software applications (e.g., communications protocol programs and data). A computer network may include multiple computer processes executing on several computer systems as a distributed multiprocessing platform in which the several computer systems are accessible by each of the computer processes. Additionally, multiple computer processes executing on the same computer system often communicate with each other in a similar fashion as multiple computer processes executing on different computer systems. Consequently, it often makes sense to discuss interaction between computer processes instead of, or in addition to, interaction between computer systems.
Computer processes often need to coordinate their activities. Conceptually, this coordination is implemented via some form of passive or active communication between computer processes. Such communication is typically referred to as interprocess communication (IPC). Some basic IPC techniques include the following: locking files or records to indicate that an alternately shared resource is being used, and sending signals by one process to another process. These IPC techniques are somewhat limited in scope and suffer from a lack of reliable synchronization. Other IPC techniques include the use of pipes, message queues, semaphores, remote procedure calls and sockets.
Shared memory is an IPC technique which provides a shared data space that is accessed by multiple computer processes and may be used in combination with semaphores. Shared memory allows multiple processes to share virtual memory space. Shared memory provides a quick but sometimes complex method for processes to communicate with one another. In general, one process creates/allocates the shared memory segment. The size and access permissions for the segment are set when the segment is created. The process then attaches the shared segment, causing the shared segment to be mapped into the current data space of the process. (The actual mapping of the segment to virtual address space is dependent upon the memory management hardware for the system.) If necessary, the creating process then initializes the shared memory. Once created, other processes can gain access to the shared memory segment. Each process maps the shared memory segment into its data space. Each process accesses the shared memory relative to an attachment address. While the data that these processes are referencing is in common, each process will use different attachment address values. Semaphores are often used to coordinate access to a shared memory segment. When a process is finished with the shared memory segment, the process can detach from the segment. The creator of the segment may grant ownership of the segment to another process. When all processes are finished with the shared memory segment, the process that created the segment is usually responsible for removing the segment.
Computer systems are often used to provide general manufacturing monitoring and control. For example, a semiconductor manufacturing computer system is a computer system for providing information, control and/or automation to semiconductor manufacturing tools and/or systems in a semiconductor manufacturing facility. For example, one semiconductor manufacturing system is the WorkStream Distributed Factory System (WorkStream DFS), WorkStream DFS.backslash.A.TM. or other variants (hereinafter, WorkStream) which are available from Consilium, Inc. of Mountain View, Calif.
Referring to FIG. 5A, WorkStream is typically implemented via a single server. For example, a WorkStream user may initiate a WorkStream application session (hereinafter, work session) on a server computer system 530-1 from one of several client computer systems or terminals (not shown) which are coupled to server computer system 530-1. In such an environment, communication between system managers and work session users is fairly simple as the number and whereabouts of each work session user is known and each work session user is easily contacted.
Referring to FIG. 5B, labeled prior art, when a large number of instances of WorkStream applications are implemented over multiple server systems 530, communication between the system managers and work session users becomes complicated. After a work session user initiates a work session (e.g., one of work sessions 540), there is limited ability to dynamically communicate information to that work session and the user thereof. When a work session user is engaged in a work session, a system manager often has a difficult time communicating with the work session user or the work session via a system management computer process. As the number of instances of work sessions increases and the locations of work sessions become more distributed, communication between system managers and work session users can become increasingly difficult. For example, if five or more servers 530 were used to support 500 or more work sessions 540 distributed over a large computer network in a semiconductor fabrication facility, the ability to dynamically communicate information to each of the 500 or more work sessions or users thereof would become commensurably more difficult.
Referring to FIGS. 5A and 5B, a system manager may communicate with a work session user via a system management process which stores a value in file 514 of storage 512. Each of work sessions 540, repeatedly reads file 514 to determine if the value stored in file 514 has changed from an initial value. In system 500A of FIG. 5A, these reads occur rather quickly as they are performed within server 530-1. In system 500B of FIG. 5B, these reads can take longer to perform as they are performed over network coupling 505 which is typically much slower than the internal couplings of computer system 530-1. Furthermore, such reads consume bandwidth of network coupling 505. Because the number of such reads can occur quite frequently (e.g., upon every screen transaction) for each work session, and because the number work sessions can become quite large, network coupling 505 can lose significant bandwidth as a result, and other important network communications are degraded thereby.